package com.aaa.tmr.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;

/**
 * @ fileName:OssUtil
 * @ description:
 * @ author:zhz
 * @ createTime:2021/3/23 14:55
 */
public class OssUtil {

    /**
     * 通用文件上传方法(上传到阿里云的oss服务上)
     * @param file  上传文件
     * @param savePath  保存路径
     * @param ossProperty  需要参数
     * @return
     */
    public static String  uploadFile(MultipartFile file, String savePath, OssProperty ossProperty){

        OSS ossClient = null;
        try {
            //获取原文件名称
            String originalFilename = file.getOriginalFilename();
            //获取原文件后缀
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            //拼装新文件名称
            String newfileName = UUID.randomUUID()+suffix;
            //防止savePath不带/  savePath = a/b/c
            if(!savePath.endsWith("/")){
                savePath=savePath+"/";
            }
            //最终新文件全路径为 a/b/c/fdsfdsafasdfadsfawr.png
            String newfilePath = savePath+newfileName;
            // 创建OSSClient实例。
            ossClient = new OSSClientBuilder().build(ossProperty.getEndpoint(),
                    ossProperty.getAccessKeyId(), ossProperty.getAccessKeySecret());
            //通过springmvc提供MultipartFile对象获取文件流
            InputStream inputStream =file.getInputStream();
           // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
            ossClient.putObject(ossProperty.getBucketName(), newfilePath, inputStream);
            return newfilePath;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //判断是否为空关闭，防止空指针异常，误报错误
            if(ossClient!=null){
                // 关闭OSSClient。
                ossClient.shutdown();
            }
        }
        return null;
    }
}
